gdk/surface: Emit layout event while frozen
authorJonas Ådahl <jadahl@gmail.com>
Fri, 4 Dec 2020 07:04:58 +0000 (08:04 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Mon, 7 Dec 2020 19:37:29 +0000 (20:37 +0100)
The allocation of popups are part dependent of the allocation of the
root, which means the root must still be allocated when updates are
frozen, otherwise we'll try to allocate non-laid out popups.

gdk/gdksurface.c

index 2c52e551f3ff3a4b1f1732f55701db03ea58c15a..fd2d0772e8b434b2cfa0ae2b399243d27ca895cf 100644 (file)
@@ -1336,9 +1336,6 @@ gdk_surface_layout_on_clock (GdkFrameClock *clock,
   if (!GDK_SURFACE_IS_MAPPED (surface))
     return;
 
-  if (surface->update_freeze_count)
-    return;
-
   surface->pending_phases &= ~GDK_FRAME_CLOCK_PHASE_LAYOUT;
 
   class = GDK_SURFACE_GET_CLASS (surface);
@@ -1358,13 +1355,6 @@ gdk_surface_request_layout (GdkSurface *surface)
   if (class->request_layout)
     class->request_layout (surface);
 
-  if (surface->update_freeze_count ||
-      gdk_surface_is_toplevel_frozen (surface))
-    {
-      surface->pending_phases |= GDK_FRAME_CLOCK_PHASE_LAYOUT;
-      return;
-    }
-
   frame_clock = gdk_surface_get_frame_clock (surface);
   g_return_if_fail (frame_clock);